#pragma once

enum class StateType{GPLAY,MENU,HTP,OPTIONS,CREDITS,PAUSE};

class IGameState
{

	StateType m_stStateType;

protected:
	
	IGameState(void) = default;
	virtual ~IGameState(void) = default;


public:
	virtual void	Enter(void) = 0;	// load resources
	virtual void	Exit(void) = 0;	// unload resources

	virtual bool	Input(void) = 0;	// handle user input
	virtual void	Update(float elapsedTime) = 0;	// update entites
	virtual void	Render(void) = 0;

	//static IGameState sInstance;

	//static IGameState* GetInstance(void) { return &sInstance; }

	virtual void SetType(StateType sType) { m_stStateType = sType; }

	virtual StateType GetType() { return m_stStateType; }
};

